Microcontroller methods of improving reliability in DC brushless motors and cooling fans

ABSTRACT

A method of controlling a motor speed for a fan assembly includes receiving a duty cycle value at a microcontroller. The microcontroller receives a measured fan speed from a speed sensor. An expected fan speed is determined, where the expected fan speed corresponds to the duty cycle value. The measured fan speed is compared with the expected fan speed. A duty cycle of a motor driving signal is reduced if the measured fan speed is less than a predetermined fraction of the expected fan speed.

BACKGROUND OF THE INVENTION

1. Technical Field

The present invention relates to cooling fans. More particularly, thepresent invention relates to intelligent cooling fans for use inelectronic systems and for designing cooling solutions for electronicsystems.

2. Discussion of the Related Art

In electronic systems, such as computer systems, cooling fans play animportant role in maintaining their operational capabilities. Theinability to remove excessive heat from electronic systems may lead topermanent damage of the system. Because of the complexity of existingelectronic systems, cooling fans having added functionalities other thanjust providing cooling air, such as the ability to control the speed ofa fan, the ability to monitor a tachometer pulse on a fan to determineinstantaneous fan speed, and the ability to detect if a fan has failedor is slower than its preset speed, are required. Although thesefunctionalities exist in some cooling fans today, there is no standarddesign or protocol that is available to control cooling fans produced bydifferent manufacturers. Moreover, in order to implement these coolingfans within a system, specialized printed circuit assemblies (PCAs),also called controller cards, are required to be designed so as toprovide signals that a fan can understand and also to receive andprovide signals to the system in a form that is interpretable by theelectronics of the system.

If one desires additional functionality, such as the ability for thefans to compensate for other failed fans by increasing in speed, theability for fans to notify external hardware that there is a problem, orthe ability for fans to increase speed in response to increased systemtemperatures, a specialized PCA or controller card is also required. ThePCA or controller card is designed and built to be capable of detectinga fan failure, notifying the system that a fan has failed, and adjustingthe speeds of the other fans in the system. The design and manufactureof PCAs and controller cards involve a great deal of engineering timeand resources, which ultimately add to the cost of the overall systemutilizing the cooling fan(s).

Designing cooling solutions for new systems is also a time-consumingprocess for the thermal design engineer. Typically, the PCA orcontroller card is required to be designed and built for controlling thefan speed and other functionality, such as failure detection and alarmsettings. Often times, the design and construction of multiple controlcards are required so as to test them in real world applications toobtain the right combination of fans, fan speeds, alarm settings, etc.The multiple iterations of installing sample fans in a system,determining the adequate fan speeds and power required, and testing thefans in the system, for example, are costly and inefficient.

Another concern involving conventional cooling fans, and in particular,direct current (DC) brushless cooling fans, is that they change speedsdepending on the applied input voltage. As the input voltage isincreased, the fans speed up and use more power. When input voltage isdecreased, the fans decrease in speed and provide less cooling. Manytypical applications have a voltage range that may vary between 24 to 74volts. Accordingly, a system designer is charged with maintaining aconstant cooling during these wide voltage swings. Accordingly, avoltage regulating power supply is usually installed in a system to keepthe voltage to the fans constant. However, having to install a voltageregulating power supply adds additional complexity and cost to theoverall system as well.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates a cooling fan solution according to an embodiment ofthe present invention;

FIG. 2 illustrates an electronic system implementing a plurality ofcooling fans according to an embodiment of the present invention;

FIGS. 3A and 3B illustrate a schematic circuit diagram for a cooling fanaccording to an embodiment of the present invention;

FIG. 4A illustrates voltage and current waveforms according to the priorart;

FIG. 4B illustrates a voltage waveform and a current waveform accordingto an embodiment of the present invention;

FIG. 4C illustrates a flow chart diagram of a logic path for amicrocontroller to maintain a speed of a cooling fan according to anembodiment of the present invention;

FIG. 5 illustrates a sample screen of a fan controller user interfaceaccording to an embodiment of the present invention;

FIG. 6 illustrates a sample screen of advanced functions of a fancontroller user interface according to an embodiment of the presentinvention;

FIG. 7 illustrates a flow chart diagram of a logic path for a coolingfan according to an embodiment of the present invention;

FIG. 8 illustrates a flow chart diagram of determining cooling solutionspecifications for an electronic system using a cooling fan according toan embodiment of the present invention;

FIG. 9 illustrates a method of emulating an analog current limitfunction according to an embodiment of the present invention;

FIG. 10 illustrates a cooling fan including the analog current emulationfunction according to an embodiment of the present invention;

FIG. 11 illustrates a method of predicting a life of a cooling fanutilizing a weighting factor according to an embodiment of the presentinvention;

FIG. 12 illustrates a flowchart for analyzing operating points ofinterest or measurement points in a cooling fan according to anembodiment of the present invention;

FIG. 13 illustrates a method of measuring points of interest in acooling fan in order to keep a cooling fan from failing according to anembodiment of the present invention; and

FIGS. 14A and 14B illustrate operating points of interest for anexemplary cooling fan according to an embodiment of the presentinvention.

DETAILED DESCRIPTION

FIG. 1 illustrates a cooling fan solution according to an embodiment ofthe present invention. The cooling fan 100 includes a fan module 110,which has a fan 112 (including fan blades) and a motor 114 rotatablycoupled to the fan 112 to drive the fan 112. A microcontroller 120, suchas an 18-pin PIC16C717 microcontroller device manufactured by MicrochipTechnology, Inc., is in direct communication with the fan module 110,and specifically, the motor 114. Any suitable microcontroller orprocessor may be utilized, though. The microcontroller 120 is preferablyfixed internally within the cooling fan 100.

A bus interface, such as the Inter-IC (I2C) (“I2C-Bus Specification”,Version 2.1, January 2000, from Philips Semiconductors) bus interface130 is in communication with the microcontroller 120. The bus interface130 facilitates transfer of data to and from the microcontroller 120.The bus interface 130 may be interconnected by bus lines 132, such asI2C bus lines, to a system 140. The I2C bus lines 132 has two lines: adata (SDA) line and a clock (SCL) line. Inter-IC (I2C) may be accessedserially so that each individual device utilizing the I2C protocol has aspecific identification (ID), but may all be connected to the samecommunication line(s) or bus(es) (i.e., it may be connected as aparallel bus). Inter-IC (I2C) is a useful protocol because it isfamiliar to thermal design engineers who utilize cooling fans in theirsystem designs, and a fair number of digital logic devices utilize theI2C protocol. However, any other bus interface systems and protocols mayalso be utilized. For example, the Controller-Area Network (CAN)protocol (Controller-Area Network (CAN) Specification, version 2.0,1991, Robert Bosch GmbH, Stuttgart, Germany), utilized in the automotiveindustry, may also be utilized with the bus interface 130 according toan embodiment of the present invention.

Besides the ability for a fan customer or thermal design engineer tocontrol the fan speed, monitor a tachometer pulse on the fan todetermine instantaneous fan speed, and detect if the fan has failed oris slower than a preset speed, additional functionality, such as theability to electronically read the part number of a cooling fan 100, theability to electronically determine the fan manufacturer, and theability to electronically read the manufacturing date, is particularlydesirable. Because of the concern that various fan manufacturers mayhave different methods of controlling fan speed, or providing alarm ortachometer signals, being able to easily obtain cooling fan 100information such as the part number, the fan manufacturer, and themanufacturing date quickly aids in the design and repair of a coolingsolution.

According to an embodiment of the present invention, the microcontroller120 is programmed with program code that enables the microcontroller 120to read byte communications provided by a system or device 140 thatutilizes, for example, the I2C protocol. In a particular embodiment ofthe present invention, the microcontroller 120 includes a program memoryinto which the program code is stored. The PIC16C717 microcontroller,for example, is capable of handling 14-bit words and has a capacity of 2kilobytes. The program or instruction code is programmed only once intothe microcontroller 120 at the factory, and it is not re-programmable orre-writeable by an end user or cooling fan customer. The PIC16C717microcontroller, for example, also includes a small data memory, or“scratch pad memory”, having a capacity of 256 bytes available to themicrocontroller 120 to conduct its operations. The data memory of themicrocontroller 120 is volatile and does not store any programming orinstructions, but rather it is only a working memory.

The program code (such as code written in the “C” programming language)in the microcontroller 120 may include the cooling fan's 100 partnumber, manufacturer, and date of manufacture so that when themicrocontroller 120 receives a command, e.g., from the hostsystem/device 140, to output such data to a system or device 140connected thereto, the microcontroller 120 may readily output therequested data. Useful data other than the cooling fan's 100 partnumber, manufacturer, and date of manufacture, such as the current(Amps) draw of the fan, may be included as well. The microcontroller 120may communicate data regarding the cooling fan 100 in, for example, theI2C protocol. By providing a cooling fan 100 that is capable of directlycommunicating with a system or device 140 utilizing a common protocol,such as the I2C protocol, PCAs or controller cards are not required atall to control or communicate with the cooling fan 100.

FIG. 2 illustrates an electronic system implementing a plurality ofcooling fans according to an embodiment of the present invention. Aplurality of cooling fans 242, 244, 246, 248 are provided within theelectronic system 200. Each of the plurality of cooling fans 242, 244,246, 248 are electrically connected to a connector module 230, which isa line splitter for a power source 210 and a user system/device 140.According to an embodiment of the present invention, the electronicsystem 200 utilizes the I2C protocol, and the user system/device 140 hascommunication lines according to the I2C protocol, a data line 222 and aclock line 224 connected to the connector module 230. The connectormodule 230 in turn splits the data line 222 and the clock line 224 toeach one of the plurality of cooling fans 242, 244, 246, 248. Similarly,the power source lines, power line 212 and power return line 214, fromthe power source 210 are connected to the connector module 230, which inturn splits the power line 212 and the power return line 214 to each oneof the plurality of cooling fans 242, 244, 246, 248.

Specific addresses required in all I2C devices may be set externally (byconnecting address lines high for a “1”, or low for a “0”), orinternally during production. The data line 222 and the clock line 224for each one of the plurality of cooling fans 242, 244, 246, 248 and theuser system/device 140 may be connected to each other, or to an internalbus, which enables the user system/device 140, for example, to changethe fan speeds of any one of the plurality of cooling fans 242, 244,246, 248, to detect the fan speeds of any one the plurality of coolingfans 242, 244, 246, 248, to read the part number of any one theplurality of cooling fans 242, 244, 246, 248, etc.

According to another embodiment of the present invention, themicrocontroller 120 may be programmed with a program code to enable eachcooling fan 100 to detect failures of other cooling fans 242, 244, 246,248 to notify a user system/device 140 that a fan has failed, or toadjust the speeds of the other fans in the system to compensate. In theprior art, a specialized PCA or controller card was required to bedesigned and built to provide these functionalities for an electronicsystem 200 utilizing cooling fans 242, 244, 246, 248. Accordingly, themicrocontroller 120 may be programmed with program code so that eachcooling fan 242, 244, 246, 248 has the ability to detect and compensatefor other failed fans by increasing its fan speed, to notify externalhardware 140 that there is a problem, or to increase its fan speed inresponse to increased system temperatures. By having each of theplurality of cooling fans 242, 244, 246, 248 in communication with eachother, added redundancy and functionality may be provided to the overallsystem 200.

In one particular embodiment, the cooling fans 242, 244, 246, 248 areconnected to each other by their communication lines 132 (see FIG. 1),which may be facilitated by a connection to a shared bus. If one of thecooling fans 242, 244, 246, 248 fails, then the failure is detected bythe other cooling fans 242, 244, 246, 248. Upon this failure detection,the other cooling fans 242, 244, 246, 248 may be programmed to increasethe fan speed to compensate for the decreased airflow due to the failureof one of the cooling fans 242, 244, 246, 248. In a further embodiment,temperature sensors may be implemented utilizing the I2C protocol andconnected to the plurality of cooling fans 242, 244, 246, 248 so thateach of the cooling fans 242, 244, 246, 248 may communicate directlywith the temperature sensors (or through the host system/device 140 ifthe temperature sensors are not directly connected to the cooling fans242, 244, 246, 248). Therefore, the plurality of cooling fans 242, 244,246, 248 may be further programmed to increase fan speeds if an increasein temperature is detected by the temperature sensors, or decrease thefan speed if the temperature drops. In other words, the cooling fans242, 244, 246, 248 may also be aware of the temperatures detected by thetemperature sensors installed within the system and act accordingly. Byconnecting the cooling fans 242, 244, 246, 248 to each other and placingthem into a “multi-master” mode, each cooling fan 242, 244, 246, 248 isin communication with each other and the redundant and failure recoveryoperations discussed above may be implemented.

By implementing a microcontroller 120 and a bus interface 130 utilizinga standard protocol, such as the I2C protocol, engineers are freed fromdesigning and building a PCA or controller card, the resulting system isnot burdened with the additional cost of the controller card, and thecooling fan 100 may be directly added to the existing bus of thecustomer or design engineer hardware. The cooling fans 242, 244, 246,248 (see FIG. 2) may be connected to each other, or to a commonlyconnected printed circuit board (PCB), to greatly simplify coolingsolution design and construction. Moreover, the savings of not requiringa specialized PCA or controller card are significant, as they may runthree times the cost of the cooling fan itself. In one particularembodiment, the cooling fans 242, 244, 246, 248 may be compatible with,for example, the IBM Specification 18P3640 (October 2001) Type 5 fans.

According to yet another embodiment of the present invention, a coolingfan 100 (see FIG. 1) is provided that is capable of operating at aconstant speed even with changing/varying input voltage and/or motorload. As mentioned above, the majority of conventional DC brushlesscooling fans change speeds with applied input voltage. As the inputvoltage is increased, the fans speed up and use more power. When inputvoltage is decreased, the fans decrease in speed and provide lesscooling. Many existing applications have a voltage range that can varyfrom 24 to 74 volts. The design engineer is charged with maintaining aconstant cooling for the system during these wide voltage swings.Typically, the design engineer installs a voltage regulating powersupply in the system to keep the voltage to the fans constant. However,providing a voltage regulating power supply adds more complexity andincreases the cost to the overall system.

FIGS. 3A and 3B illustrate a schematic circuit diagram for a cooling fanaccording to an embodiment of the present invention. In an embodimentaccording to the present invention, the microcontroller 120 has programcode having instructions to detect the speed of the cooling fan 100 inreal time and maintain that speed, regardless of changes in the inputvoltage. Referring to FIG. 3A, line E1 312 is the voltage (in) line,while line E2 314 is the voltage return (ground). In a preferredembodiment of the present invention, lines 322 and 324 are Inter-IC(I2C) lines: line 322 being the data line and line 324 being the clockline for communication utilizing the I2C protocol. Typically, in coolingfan applications, the input voltage may be 12 volts, 24 volts, or 48volts. Diodes D1 and D2 332 provide for reverse polarity protectionwithin the system. Zenor diode D5 334 provides a drop in power andregulates the voltage to, for example, 12 volts. A 5V regulator 342 isincluded to provide regulated 5 volts to the microcontroller 120 and thespeed sensor 116 (e.g., the Hall sensor). The Hall sensor 116 provides adigital signal to the microcontroller 120 based on the positions of thestator 380 of the fan motor 114 utilizing the Hall effect, which occurswhen the charge carriers moving through a material experience adeflection because of an applied magnetic field. This deflection resultsin a measurable potential difference across the side of the materialwhich is transverse to the magnetic field and the current direction.According to one embodiment, the Hall sensor 116 provides a 50% dutycycle signal, that is, two pulses for each revolution/cycle of the fan.Based on the signals provided by the Hall sensor 116, themicrocontroller 120 is capable of determining the speed of the coolingfan 100 and making any adjustments necessary to maintain a constant fanspeed.

Referring to FIG. 3B, the microcontroller 120 is connected to twometal-oxide semiconductor field effect transistor (MOSFET) drivers 350,360. Through the MOSFET drivers 350, 360, the microcontroller 120controls the duty cycle (on time vs. off time) of the voltage providedto the fan motor 114, and more specifically, to the MOSFETs 372, 374,376, 378 and across the stator 380. According to an embodiment of thepresent invention, the drains of MOSFETs 372, 376 are coupled to thevariable input voltage (from line E1 312). The gate of MOSFET 372 iscoupled to the high (H0) line (7) of MOSFET driver 350. The gate ofMOSFET 376 is also coupled to the high (H0) line (7) of MOSFET driver360. The logic on pin 2, input from the microcontroller 120, of eachMOSFET driver 350, 360 are controlled by different lines, lines D and E,respectively. The state of pin 2 is the same as the H0 pin of eachMOSFET driver 350, 360, and the microcontroller 120 alternates thesesignals so that MOSFETs 372, 376 are not in the “high” state at the sametime.

The sources of MOSFETs 372, 376 are each coupled to a node to which thedrains of each of MOSFETs 374, 378 are respectively coupled, and towhich the stator 380 is coupled. The gate of MOSFET 374 is coupled tothe low output (L0) line (5) of MOSFET driver 350. The gate of MOSFET378 is also coupled to the low output (L0) line (5) of MOSFET driver360. The sources of each of MOSFETs 374, 378 are coupled to a referencevoltage or ground 338. In the configuration illustrated in FIG. 3B,MOSFETs 372, 378 are “on” at the same time while MOSFETs 374, 376 are“off”, and alternatively, when MOSFETs 374, 376 are “on”, MOSFETs 372,378 are “off”.

Accordingly, when an increasing speed is detected via the Hall sensor116, the microcontroller 120 reduces the stator duty cycle to maintainthe same energy transfer to the motor windings. The shifts in duty cycleare implemented in program code embedded within the microcontroller 120.Resistor 336 provides a locked rotor detection signal for themicrocontroller 120. The microcontroller 120 detects the current flowingthrough the windings by monitoring the voltage representation of thecurrent that appears on resistor 336. If this voltage exceeds a setthreshold set internal to the microcontroller 120, then the outputpulses are terminated and a locked rotor condition is perceived. Thecapacitors C1 and C2 338 provide for voltage ripple filtering and asadditional protection to limit high switching currents from causingnoise in the user's system.

FIG. 4A illustrates voltage and current waveforms according to the priorart. For example, the nominal voltage for a cooling fan is 48 Vdc. Ifthe voltage is increased to 60 Vdc, for example, the fan has a physicaltendency to increase in speed as a reaction to more voltage and energybeing switched by the MOSFETs 372, 374, 376, 378 (see FIG. 3B). The topwaveform set 410 represents the voltage across a stator 380 withwaveform 414 representing 48 volts and waveform 412 representing 60volts. The bottom waveform set 420 represents the current through thestator 380 with waveform 424 representing a 48 volt input and waveform422 representing a 60 volt input. Accordingly, without taking anyadditional measures, the increased voltage and current causes additionalenergy to be transferred to the coils, which results in a fasterspinning fan.

Rather that utilizing a voltage regulating power supply as in the priorart, according to an embodiment of the present invention, themicrocontroller 120 of the cooling fan 100 monitors the speed sensor116, such as a Hall sensor, to detect an increasing speed.Alternatively, the back electromagnetic field (EMF) generated by anincrease in speed of the cooling fan 100 may be monitored to detect theincrease in speed as well. To compensate for the increasing speed, themicrocontroller 120 has program code having instructions to reduce thestator duty cycle (i.e., the on-time vs. the off-time) to maintain thesame energy transfer to the motor 114 when an increase in speed isdetected. Preferably, the fan speed is controlled utilizing Pulse WidthModulation (PWM), i.e., driving the fan motor 114 using short pulses(the pulses vary in duration to change the speed of the motor—the longerthe pulses, the faster the motor turns, and vice versa).

FIG. 4B illustrates a voltage waveform and a current waveform accordingto an embodiment of the present invention. The top waveform 430represents a reduced stator duty cycle (on-time vs. off-time) of thevoltage (e.g., 60 Vdc) as compared to waveform 412 in FIG. 3A. Thebottom waveform 440 represents a reduced stator duty cycle of thecurrent as compared to waveform 424 in FIG. 3A. Accordingly, while thevoltage and current has increased, the “time-on” of each has beendecreased to maintain the same energy transfer to the motor 114, andthereby regulate the fan speed. In one embodiment of the presentinvention, shifts in the stator duty cycle based on the various voltagelevels are preprogrammed in the program code embedded within themicrocontroller 120.

FIG. 4C illustrates a flow chart diagram of a logic path for amicrocontroller to maintain a speed of a cooling fan according to anembodiment of the present invention. A reference constant is provided401 (programmed into the microcontroller 120) corresponding to theconstant speed at which the cooling fan 100 is to be maintained. Themicrocontroller 120 enters a main routine 402 for its normal operation.The program code embedded within the microcontroller 120 determineswhether a speed sensor interrupt, such as a Hall sensor interruptsignal, was generated 403. If such an interrupt was not generated, thenthe operation flows back to block 402. If an interrupt was generated,then a timer value lapsed since the occurrence of the last interruptsignal is captured 404. It is determined 405 whether the timer value isgreater or less than the reference constant, which represents thedesired fan speed. If the timer value is less than the referenceconstant, then the duty cycle (such as the PWM duty cycle) isdecremented 406 by one clock, the timer is reset 407 for a newcomparison, and operation flows back to block 402. If the timer value isgreater than the reference constant, then the duty cycle (such as thePWM duty cycle) is incremented 408 by one, the timer is reset 409 for anew comparison, and operation flows back to block 402. If the timervalue is equal to the reference constant, then the operation flows backto block 402.

By utilizing the cooling fan 100 according to an embodiment of thepresent invention, the thermal design engineer does not need to designand build a specialized power supply or other additional circuitry in aPCA, controller card, or in the fan tray in order to compensate for thenegative effects on cooling due to swings of the system voltage.Moreover, specialized power supplies can easily cost three times that ofthe fan itself. The cooling fan 100 according to an embodiment of thepresent invention provides a constant fan speed regardless of the inputvoltage, and design time and costs are significantly reduced.

FIG. 5 illustrates a sample screen of a fan controller user interfaceaccording to an embodiment of the present invention. The fan controlleruser interface 500 is preferably a software program executing on acomputer system, such as a desktop personal computer (PC) or a laptopcomputer. The desktop PC or laptop computer may be connected to anetwork and accessed remotely via, for example, the Internet usingInternet Protocol (IP). The fan controller user interface software 500enables a thermal design engineer to quickly create a cooling solutionfor a specific application. A typical application of the fan controlleruser interface software 500 is for designing a cooling solution for anew cabinet/housing for an electronic system.

When designing a cooling solution for a new cabinet/housing, the designengineer does not know: (1) how much airflow is needed; (2) what typesof alarms are required; (3) what functions are necessary on thecontroller card circuitry; and (4) how the system should behave withincreasing system temperature. By utilizing the fan controller userinterface software 500 according to an embodiment of the presentinvention, the design engineer may quickly install cooling fans 100according to embodiments of the present invention and connect these fansto a computer system (e.g., a desktop PC or a laptop computer) executingthe fan controller user interface software 500 to determine the coolingsolution specifications for a particular cabinet/housing.

The cooling fan(s) 100 are connected to a power source and then to thecomputer system executing the fan controller user interface software500. The cooling fan(s) 100 may be connected to a fan/computer adapter,which converts the communications protocol utilized by the coolingfan(s) 100, such as the I2C protocol, to one recognizable by thecomputer system, such as the Universal Serial Bus (USB) protocol. Thefan/computer adapter then plugs into, for example, the USB port on thecomputer system so that the computer system is in communication with thecooling fan(s) 100.

After assembling the cooling fan(s) 100 into a system cabinet/housing,the design engineer starts the fan controller user interface software500. As illustrated in the main screen 500 of FIG. 5, the designengineer may change the speed of any cooling fan 510, 520, 530, 540connected, set basic alarms, monitor the temperature sensor(s)connected, and constantly refresh the data of all of the cooling fan(s)510, 520, 530, 540 (part number, speed, alarm status, etc.). In oneembodiment, the temperature sensor(s) 122 may be incorporated inside themicrocontroller 120. The fan controller user interface software 500emulates the program code resident in a microcontroller 120 to controlthe behavior of each cooling fan 510, 520, 530, 540. In other words, thefan controller user interface software 500 is adapted to allow a user tocontrol and operate all of the functions of each cooling fan 510, 520,530, 540. Therefore, all of the functions of each cooling fan 510, 520,530, 540 are available to the thermal design engineer for designtroubleshooting and prototyping.

The main screen shot 500 of FIG. 5 shows basic information for fourcooling fans 510, 520, 530, 540, including their part numbers, fanidentifications, fan speed, and status (e.g., active, stop, etc.). Basicinformation for two temperature sensors is also provided, includingtheir sensor identifications, part numbers, and the temperaturesdetected. Other information may also be provided to the user on thescreen. There is provided a fan control entry window 570 that allows abasic speed of the fans 510, 520, 530, 540 to be set, as well as a basicalarm, for example, to be actuated when the fan speed, revolutions perminute (RPM), drops below a certain level. A message box 580 may also beprovided to inform the user of events that occur during the use of thefan controller user interface software 500. The fan speeds of aplurality of cooling fans within a system may be set slightly differentfrom each other so as to test for and eliminate any beat frequenciesthat may occur, which may cause unwanted noise.

FIG. 6 illustrates a sample screen of advanced functions of a fancontroller user interface according to an embodiment of the presentinvention. In the advanced function screen 610 illustrated in FIG. 6,“what if” conditional scenarios may be set and tested. For example, ascenario may be configured to design an appropriate response to when oneof the cooling fans 510, 520, 530, 540 fails. The advanced functionscreen 610 allows a design engineer to easily conduct such a scenarioand program and test for an appropriate response. For example, thefollowing logic condition may be set and tested:If FAN A speed is slower than 1500 RPM then set FAN B to 3500 RPM andTRIP ALARM 1.

The fan controller user interface software 500 may be configured so thatthe commands are in a straightforward sentence-like structure, allowingthe user to manipulate the terms from a menu for the bold-underlinedterms above to vary a condition. The above example illustrates a samplecondition when one cooling fan (Fan A) that is failing is rotatingslower than 1500 RPM, a second cooling fan (Fan B) is adjusted toincrease in speed (to 3500 RPM) to provide added cooling to the system,and then alarm 1 is tripped, which may be preconfigured to alert theuser that there is a problem in the system (or even more specifically,that Fan A is failing). A number of other conditional scenarios mayconfigured using the fan controller user interface software 500according to an embodiment of the present invention. Moreover,conditional scenarios involving temperature sensors may also beestablished using a similar methodology. Therefore, the thermal designengineer is able to set and test a variety of different conditions andprogram the appropriate behavior for each fan 510, 520, 530, 540 torespond accordingly to each condition.

FIG. 7 illustrates a flow chart diagram of a logic path for a coolingfan according to an embodiment of the present invention. FIG. 7illustrates a failure detect process from the perspective of Fan A in asystem having four fans, Fans A-D. According to an embodiment of thepresent invention, each of the Fans A-D have a parallel connection to anInter-IC (I2C) bus. Initially, Fan A sends 710 a status request to FanB. It is determined whether a response is received 720 by Fan A from FanB within a predetermined period of time, e.g., 2 seconds. If a responseis received, it is determined whether a failure mode response wasreceived 730. If a failure mode response is not received, Fan A waitsfor a predetermined period of time, e.g., 5 seconds, then repeats 740the above iteration with Fan C. If no response is received by Fan A fromFan B within the predetermined period of time (e.g., 2 seconds), or if afailure mode response is received by Fan A from Fan B, then theassumption is that Fan B has failed (or is failing) and Fan A proceedsto increase 750 its fan speed based on the cooling solutionspecifications/operating parameters and programming determined using thefan controller user interface software 500, a failure notificationregarding Fan B's failure is transmitted 760 by Fan A, and Fan A waitsfor a predetermined period of time, e.g., 5 seconds, then repeats 740the above iteration with Fan C. Once the iteration with Fan C iscompleted, the iteration is also performed with respect to Fan D.

FIG. 8 illustrates a flow chart diagram of determining cooling solutionspecifications for an electronic system using a cooling fan according toan embodiment of the present invention. At least one cooling fan isinstalled 810 within a housing. Operating parameters are set 820 for theat least one cooling fan. Operation of the at least one cooling fanwithin the housing is conducted 830 based on the operating parametersset. The operating parameters of the at least one cooling fan arecaptured 840 if the operating parameters result in adequate coolingwithin the housing by the at least one cooling fan.

Once the user has made the appropriate configurations for the behaviorfor each fan 510, 520, 530, 540 and is satisfied with the functionalityof the fans 510, 520, 530, 540 installed in the cabinet/housing, theuser may “freeze” the design and store the cooling solutionspecifications or operating parameters determined (e.g., each fan's RPMsettings, alarms, conditions, temperature conditions, conditionalbehaviors (e.g., to compensate for a fan failure, temperature increase),etc., for that particular cabinet/housing). The cooling solutionspecifications may be forwarded to a cooling fan manufacturer, andspecific cooling fans adhering to the customized cooling solutionspecifications may be manufactured, including the appropriateprogramming desired by the engineer set forth during the testing withthe fan controller user interface software 500, and provided to thedesign engineer, knowing already that the cooling solution utilizingcooling fans with these characteristics and programming logic havealready been tested and proven.

By utilizing the fan controller user interface software 500 according toan embodiment of the present invention, the thermal design engineersaves a significant amount of time in the design cycle by eliminatingthe need to design and build a specialized PCA or controller card forcontrolling the speeds and alarm settings of the cooling fan(s) 510,520, 530, 540, and eliminating the iteration of asking for a fan sample,trying the fan out in the system, asking for a second higher-powered fansample, trying the fan out in the system, etc., to determine a suitablecooling solution for a cabinet/housing. The thermal design engineer isable to balance airflow, noise, redundancy, and temperature responseutilizing the fan controller user interface software 500 without havingto go through an iterative process.

FIG. 9 illustrates a method of emulating an analog current limitfunction according to an embodiment of the present invention. In coolingfans, a small resistor may be added in series with a current of themotor to monitor the current of the motor. While effective, thisapproach has three drawbacks. First, the physical size of the resistormay be large, which can cause a problem fitting the resistor into alimited size of a typical fan motor hub. Second, this physically largeresistor is much more expensive than standard resistors, which increasesthe motor cost. Third, the power dissipated by the large resistorreduces the overall motor efficiency.

In an embodiment of the invention, microcontroller software or programcode may mimic this function. A lookup table may be created 900 thatidentifies a number of duty cycle measurements and corresponding fanspeeds for the duty cycle measurements. In an alternative embodiment ofthe invention, a lookup table could include a number of DC voltagelevels and corresponding fan speeds. For example, the lookup table mayinclude an entry that 2.5 volts DC represents 2000 revolutions perminute. In an alternative embodiment of the invention, the lookup tablecould include a resistance received or sensed at the microcontroller andcorresponding fan speeds. For example, the lookup table may include anentry that that 10,000 Ohms represents 2000 revolutions per minute. Inthis case, the microcontroller provides a current through the resistanceand generates a DC voltage. This table may be created in a non-volatilememory. For example, the table may include the following entries. Stillin regard to step 900, illustratively, the DC_array (Duty Cycle) tablecolumn illustrated below includes 101 entries which correspond to the101 entries in the speed array table column. DC_array[101] = {0, 10, 20,31, 41, 51, 61, 72, 82, 92, 102, 113, 123, 133, 143, 154, 164, 174, 184,195, 205, 215, 225, 236, 246, 256, 266, 276, 287, 297, 307, 317, 328,338, 348, 358, 369, 379, 389, 399, 410, 420, 430, 440, 451, 461, 471,481, 492, 502, 512, 522, 532, 543, 553, 563, 573, 584, 594, 604, 614,625, 635, 645, 655, 666, 676, 686, 696, 707, 717, 727, 737, 748, 758,768, 778, 788, 799, 809, 819, 829, 840, 850, 860, 870, 881, 891, 901,911, 922, 932, 942, 952, 963, 973, 983, 993, 1004, 1014, 1024};Speed_array[101] = {7500, 7177, 6881, 6608, 6356, 6122, 5906, 5703,5515, 5338, 5172, 5017, 4870, 4732, 4601, 4478, 4360, 4249, 4144, 4043,3947, 3856, 3769, 3686, 3606, 3529, 3456, 3386, 3319, 3254, 3191, 3132,3074, 3018, 2964, 2913, 2863, 2814, 2768, 2722, 2679, 2636, 2595, 2555,2517, 2479, 2443, 2408, 2373, 2340, 2308, 2276, 2246, 2216, 2187, 2158,2131, 2104, 2078, 2052, 2027, 2003, 1979, 1956, 1933, 1911, 1889, 1868,1847, 1827, 1807, 1788, 1769, 1750, 1732, 1714, 16, 1680, 1663, 1647,1630, 1615, 1599, 1584, 1569, 1554, 1540, 1526, 1512, 1499, 1485, 1472,1459, 1446, 1434, 1420, 1410, 1398, 1386, 1375, 1364};

In the table illustrated above, the DC_array value may represent a dutycycle of a pulse width modulated signal that is transmitted to thecooling fan. In an embodiment of the invention, the pulse widthmodulated signal's duty cycle can be integrated utilizing a seriesresistor and a parallel capacitor and turned into a DC voltage. In anembodiment of the invention, the DC voltage is input into amicrocontroller analog to digital converter and converted into a digitalvalue. In an embodiment of the invention, the DC voltage is input intoan analog-to-digital converter external to the microcontroller andconverted to a digital value. In the embodiment illustrated above, thedigital value, i.e., the DC_array value, may be between 1 and 1024,which may be represented by 10 bits.

A Speed_array value is the speed target associated with or correspondingto the DC_array value. Illustratively, the maximum speed in the table orthe array of speed_array values may be 7500 revolutions per minute(RPM). According to the table above, this corresponds to a zero voltage(digital value of 0) reading on the analog-digital (AD) pin of themicrocontroller 1020. According to the table above, the minimum speed ofthe speed_array is 1364 RPM, which corresponds to a 5 volt reading onthe AD pin of the microcontroller 1020 (digital value of 1024). In theembodiment illustrated above, the A/D converter in the microcontrolleris a 10 bit value.

FIG. 10 illustrates a cooling fan including the analog current emulationfunction according to an embodiment of the present invention. Thenon-volatile memory 1042 may be physically located in themicrocontroller 1020. Alternatively, the non-volatile memory 1042 may bephysically located in the cooling fan 1000.

The microcontroller 1020 may measure 905 a duty cycle of a signal thatis sent to drive the fan. As discussed above, this may be a pulse widthmodulated fan signal which is input into a A/D pin on themicrocontroller 1020.

The microcontroller 1020 may receive 910 a speed measurement from thespeed sensor 1026. The speed sensor 1026 may be a hall sensor or a backemf sensor. The speed sensor 1026 may magnetically sense the speed ofthe fan and may transmit a digital or analog signal to themicrocontroller 1020.

The microcontroller 1020 may retrieve 915 a corresponding fan speed fromthe lookup table based on measured duty cycle in step 905 (or based onthe duty cycle measured in step 905). In other words, themicrocontroller 1020 may include software or program code to utilize themeasured or captured duty cycle and to retrieve, from the non-volatilememory 1042, the corresponding or expected fan speed. As illustratedabove, the microcontroller 1020 captures or measures the DC_array valueand retrieves the corresponding or expected speed array value from thelookup table. Illustratively, the microcontroller 1020 may capture aduty cycle or DC_array value of 82 and then retrieve the correspondingor expected speed_array value (speed value) of 5515.

The microcontroller 1020 may compare 920 the corresponding fan speed tothe fan speed received from speed sensor 1026. In other words, themicrocontroller 1020 is determining if the actual fan speed correspondsto what the desired or expected fan speed should be.

If the measured fan speed is less than a predetermined fraction of thecorresponding or expected fan speed, this indicates that something isnot operating properly, (i.e., is the current to motor 1014 is toohigh). In response to the measured fan speed being less than thepredetermined fraction, the microcontroller 1020 may then reduce 925 theduty cycle of the driving signal to the motor 1014. In an embodiment ofthe present invention, if the measured fan speeds is less than ⅔ of thecorresponding or expected fan speed, then the microcontroller 1020 mayreduce 925 the duty cycle of the driving signal. The microcontroller1020 may also request that readings at measurement points in the coolingfan be captured and recorded in order to determine the cause of the whythe current to the motor is too high.

Illustratively, a normal fan motor is designed to run at 10,000 RPMs.Due to a malfunction or an impediment in the cooling fan 1000, therevolutions per minute may be reduced to 6,000 RPM even thought thecurrent that is being provided to the cooling fan is enough current tonormally run the normal fan motor at 10,000 RPMs. The 6,000 RPM may bemeasured by the speed sensor 1026. Because the computer system 1040 orcustomer was transmitting a pulse width modulation signal instructingthe motor 1014 and fan 1012 to be turned at 10,000 rpm, comparisonbetween the measured fan speed and the corresponding or expected fanspeed results in the measured fan speed being less than a predeterminedfraction, in this case less than ⅔. Illustratively, the microcontroller1020 may reduce the duty cycle of the driving signal in a correspondingratio, e.g., ⅔ of the customer or computer transmitted duty cycle. Thereduction of the duty cycle reduces the current draw of the motor 1014to prevent the motor 1014 from drawing in to much current and damagingcomponents within the motor.

In an embodiment of the invention, the microcontroller 1020 mayperiodically attempt to test if the malfunction has been resolved, e.g.,the obstruction to the fan 1012 has been removed. The microcontroller1020 may attempt to slightly increase the duty cycle by a predeterminednumber of RPMs, e.g., increase a duty cycle of the driving signal by avalue corresponding to 100 RPMs. After the duty cycle has beenincreased, the speed sensor measures or captures the speed of the motor1014. If the speed of the motor 1014 does not increase, themicrocontroller 1020 reduces the duty cycle by the predetermined numberof RPMs and waits again for a predetermined time. Illustratively, thepredetermined time may be 100 milliseconds. If the speed of the motorincreases by the expected predetermined number of RPMs, e.g., 100 RPMs,the microcontroller 1020 increases the duty cycle to the increase themotor speed to the normal operating speed, e.g., 10,000 RPMs.

In a second embodiment of the invention, the normal operating speed ofthe motor/cooling fan may be a speed such as 10,000 RPMs. The speedsensor may measure that the motor speed has been reduced to 6000 RPMs.The microcontroller 1020 may shut down the driving signal to the motor1014, i.e., the motor is shut off completely. The microcontroller 1020waits a predetermined amount of time, .e.g, 3 seconds, and transmits adriving signal to restart the cooling fan 1000. The driving signalincludes a duty cycle which causes the motor to begin operating at10,000 RPMs. There is a time it takes the motor 1014 to increase itsoperating speed to the 10,000 RPM operating speed. After this time, ifthe motor does not rotate at 10,000 RPMs, as measured by the speedsensor 1026, the driving signal to the motor is not transmitted, e.g.,shut off. This process continues until the malfunction is corrected,e.g., the obstruction is cleared. Once the malfunction is corrected, themotor 1014 operates at full speed.

FIG. 11 illustrates a method of predicting a life of a cooling fanutilizing a weighting factor according to an embodiment of the presentinvention. During operation of the cooling fan, a temperature may bemonitored 1100 utilizing a temperature sensor 1044, e.g., a temperaturemeasurement may be captured. In an embodiment of the invention, atemperature sensor 1044 may be internal to a microcontroller 1020. In anembodiment of the invention, the temperature sensor may be external tothe microcontroller 1020. Under certain operating conditions, thetemperature may be monitored on a continuous basis. Under otheroperating conditions, the temperature may be monitored on a periodicbasis, such as every 15 minutes, during the time the computer system1040 or electronic device is powered on.

The monitored or measured temperature may be analyzed to determine 1105if the measured temperature is within a predefined temperature window orrange, e.g., +/−5 degrees of the pre-defined temperature. Depending onthe operating environment of the cooling fan 1000, the windowtemperature or range may be +/−5 degrees, +/−1 degree, +/−15 degrees or+/−10 degrees. For example, a computer located in an outsideenvironment, such as an airport hanger or an automobile repair shop, maybe subject to more extreme temperature changes, and thus the range oftemperatures may be larger than the range of temperatures a computersystem in an office is subjected to.

If the measured temperature is within the predefined temperature window,a total revolution count or a total number of revolutions (Revtotal) maybe incremented 1135 by a set revolution value. Illustratively, the setrevolution value may be 1 revolution. Illustratively, the set revolutionvalue may be 1000 revolutions, 10,000 revolutions, or 50,000revolutions. Under certain operating conditions, the set revolutionvalue may be based on a number of actual revolutions that occur in atemperature monitoring period. For example, if the temperature ismonitored every fifteen minutes and the actual number of revolutionsthat normally occur in fifteen minutes is 150,000 revolutions, then theset revolution value may be 150,000 revolutions.

After the set number of revolutions is added to the total revolutioncount or total number of revolutions (Revtotal), Revtotal is compared1140 to the recommended revolution life (e.g., Revlife) of the coolingfan or a milestone revolution target of the cooling fan. For example, ifthe set number of revolutions is 15K, Revtotal was 2,000,000revolutions, and Revlife is 2,000,200 revolutions, then the recommendedlife of the cooling fan has been exceeded because the total numberrevolutions is now 2,015,000 which is greater the recommended revolutionlife of 2,000,200 revolutions. The milestone revolution targets may bevalues that are points in number of revolutions during the life of acooling fan 100 that a manufacturer or system integrator deem asimportant. For example, this may be 100K less than the recommendedrevolution life value or 50%, 70%, or 90% of the recommended revolutionlife value. Under these operating conditions, once a cooling fan 1000reaches the defined revolution milestone, specific actions may occur.

If the total revolution count or total number of revolutions,(Revtotal), is greater than the recommended life or milestone target,then a message is generated 1145. Under certain operating conditions themessage is transmitted to the computer system. Under other operatingconditions, the message is stored in a non-volatile memory in thecooling fan 1000. Illustratively, when a message is transmitted, ifRevtotal is greater than the recommended life of the cooling fan, then amessage may be generated and transmitted to the computer system 1040indicating that the cooling fan 1000 is past its recommended life andshould be replaced immediately. In an embodiment of the invention, thismay also result in a shutdown operation being initiated for the coolingfan 1000.

If Revtotal is greater than one of the revolution milestone targets,then a message may be generated identifying that a cooling fan 1000 has,for example, passed 70% of its life or is 100,000 revolutions away fromthe recommended life revolution number and that a new cooling fan 1000should be ordered or procured in order to minimize downtime ordegradation of the computer system. Any milestone target may be utilizedincluding a milestone target that is 70% of the recommended revolutionlife of the cooling fan 1000. Under certain operating conditions, thegenerate message may be stored in a non-volatile memory for lateranalysis or under other operating conditions may be transferred to anexternal system (or computing device).

Under certain operating conditions, a milestone revolution target may beestablished at 70% and 90% of the recommended revolution life. Thesystem may be set to generate messages once the total number ofrevolutions (total revolution count) of the cooling fan reaches 70% ofthe recommended revolution life of the fan, 90% of the recommendedrevolution life of the fan, and at the recommended revolution life ofthe fan. At 70%, the message may be a message indicating that thecooling fan is approaching the end of its life. At 90%, the message maybe a little more urgent, and may instruct the system operator to beprepared for the cooling fan 1000 to fail. At the recommended revolutionlife of the cooling fan, the system 1040 may receive a message that thecooling fan 1000 has exceeded its life and should be replacedimmediately.

If the total revolution count or total number of revolutions is notgreater than the recommended revolution life or one of the milestonerevolution targets, then the monitoring of the temperature, e.g., step1100 continues to occur.

FIG. 11 also illustrates operating conditions if the temperature isoutside the normal operating range. In an embodiment of invention, ifthe temperature is not within a predefined window or range, then aweighting factor may be changed 1110. The weighting factor is a factorthat is multiplied by a number of revolutions in order to compensate forthe increase in temperature. In other words, a fan running at 30 degreeCelsius temperature with 100,000 revolutions experiences the same wearand tear as a fan running at 45 degree Celsius temperature with 80,000revolutions, and the weighting factor compensates for this. A highertemperature leads to a fan not operating in as efficient a matter as oneoperating at a lower temperature.

An example weighting factor table and associated temperature table islisted below. In this embodiment of the invention, the standardoperating temperature of the cooling fan is 25 degrees Celsius. Thetable illustrates the increase in weighting factor as the temperatureincreases in the cooling fan. Temperature Weighting Factor 25° C. 1 35°C. 1.5 45° C. 2.7 55° C. 4.3 65° C. 6.4 70° C. 10

In this embodiment of the invention, the set number of revolutions ismultiplied 1115 by the temperature based weighting factor to compensatefor the higher or lower operating temperature. As discussed above, theset number of revolutions may represent the number of revolutions thatoccur during a monitoring period. For example, if the weighting factoris 1.25 and the set number of revolutions is 1,000, then the weightedrevolution total is 1,250 revolutions. Illustratively, if thetemperature is 55° C., the weighting factor is 4.3 and the weightedrevolution total is 4,300.

The weighted revolution total is added 1125 to the total number ofrevolutions (Revtotal) to create a temperature adjusted total number ofrevolutions. For example, if the total number of revolutions is1,000,000 and the weighted revolution total is 500,000 (equal to theweighting factor of 5×100,000 revolutions), then the new total number ofrevolutions is 1,500,000 even though the actual number of total fanrevolutions is only 1,100,000.

The new total number of revolutions, e.g., the temperature adjustednumber of revolutions, is compared 1140 to the recommended life numberrevolutions of the cooling fan or milestone revolution targets. If thetemperature adjusted number of revolutions is greater than one of themilestone revolution targets and/or the recommended life number ofrevolutions of the cooling fan 1000, then a message is generated 1145 bythe computer system indicating that the milestone revolution target orrecommended life number of revolutions has been passed. If thetemperature adjusted number of revolutions is less than the milestonetarget or the recommended life revolution of the cooling fan, then thetemperature of the cooling fan is monitored again (step 1100) after adesignated monitoring period.

Under certain operating conditions, the weighting factor is notcalculated until after the temperature adjust number of revolutions iscompared to the recommended life revolution or milestone targetrevolutions of the cooling fan. This is illustrated by reference numeral1130 of FIG. 11. In this example, the weighted factor utilized formultiplying the revolution count is not the most recently measuredtemperature; instead it is the previously measured temperature. This maybe utilized in situations where the weighting factor is to reflect apast temperature value of the cooling fan since the past temperature mayhave lead to degredation of the operation of the cooling fan 1000. Inthis embodiment of the invention, the weighting factor is not changedaccording to the monitored temperature immediately after it isdetermined whether the monitored temperature is in a predefined window,as it was in step 1110.

The table below illustrates three increments of the flowchart of FIG.11. Each monitoring period, e.g., 30 minutes, is represented by 10,000revolutions (10K revolutions occur each 30 minutes). The temperature forthe first rotation is 25 degrees, which is the standard operatingtemperature. Thus, the temperature is within the first predefinedtemperature window. Since the total revolution count was zero, the totalrevolution count is now equal to 10,000. The recommended revolution lifeof the cooling fan is 1,000,000 revolutions, so no message is generated.During a succeeding monitoring period, the temperature of the fan ismeasured to be 35 degrees. The temperature is no longer within thepredefined window because the predefined window is +5 degrees outsidethe range, if the range was +/−5 degrees. The weighting factor table isconsulted and a factor of 1.5 is retrieved for 35 degrees. The setnumber of revolutions, e.g., 10K, is multiplied by the weighting factorto create a weighted number of revolutions of 15K. The 15K revolutionsis added to the previous total revolutions which results in a new totalnumber of revolutions of 25K. Again, the new total number of revolutionsis lower than the recommended life revolutions and no message isgenerated.

During a succeeding monitoring period, the temperature of the fan ismeasured to be 45 degrees. Because this temperature is outside of thepredefined temperature range, a weighting factor table is consulted anda factor of 2.7 is retrieved for 45 degrees. The set number ofrevolutions is multiplied by the weighting factor to create a weightednumber of revolutions of 27K. The weighted number of revolutions isadded to the new total number of revolutions, e.g., 25K, and the newtotal number of revolutions is 42K. This is also not greater than therecommended life revolutions of the fan so no message is generated. Itis important to note that although only 30K actual revolutions of thecooling fan have occurred, a temperature adjusted 42K revolutions isrecorded for the cooling fan to more accurately reflect when the coolingfan may fail. Weighted New Total Number of Number of Incre- Actual # ofTemper- Weighting Revolu- Revolu- ment revolutions ature Factor tionstions 1 10,000 25 1.0 10,000 10,000 2 10,000 35 1.5 15,000 25,000 310,000 45 2.7 27,000 42,000 30,000 42,000

FIG. 12 illustrates a flowchart for analyzing operating points ofinterest or measurement points in a cooling fan according to anembodiment of the present invention. FIGS. 14A and 14B illustrateoperating points of interest for an exemplary cooling fan according toan embodiment of the present invention. The table below identifies theoperating points of interest for the cooling fan. Reference Numeral/Identification Numeral Measurement Of I Fan current II Fan input voltageIII Microcontroller temperature measurement 322 (IV) Speed control input324 (V) Tachometer alarm status VI Microcontroller input voltage VIIMOSFET Input Voltage

Referring to FIG. 12, operating points of interest (or measurementpoints) are monitored 1200 in the cooling fan 1000. In an embodiment ofthe invention, a microcontroller 1020, may receive inputs correspondingto the operating points of interest. For the analog inputs, the analoginputs may be received at the microcontroller 1020 by dividing down theanalog signals to safe levels for the microcontroller by utilizing highresistance value resistors in a resistor divider circuit. In anembodiment of the invention, the analog signal is received by themicrocontroller 1020 and converted to a digital signal by anAnalog/Digital converter (ADC) inside the microcontroller 1020. Themonitoring may occur on a periodic basis. Illustratively, the monitoringmay occur every 1 microsecond, every second, or every 30 seconds.

The readings at the operating points of interest or measurement pointsmay be captured and then stored 1205 in a memory in the cooling fan. Asillustrated in FIG. 10, the memory 1042 may be a non-volatile memorysuch as a flash memory or an EEPROM. In an embodiment of the invention,the non-volatile memory 1042 may be internal to the microcontroller1020. In an embodiment of the invention, the non-volatile memory 1044may be external to the microcontroller but still located inside thecooling fan 1000.

In an embodiment of the invention, the captured readings at theoperating points (measurement points) of interest may be transmitted1210 to a receiver that is external to the cooling fan 1000. Asillustrated in FIG. 10, the microcontroller 1020 in the cooling fan 1000may transmit the measurements at the operating points of interestthrough the interface 1030 to a computer system 1040 utilizing a knowncommunication protocol.

In an embodiment of the invention, the captured readings at theoperating points of interest or measurement points may remain in thenon-volatile memory 1042 of the cooling fan 1000 for a time period. Thenon-volatile memory 1042 may be large enough to accommodate a set numberof readings of the operating points of interest or measurement points.For example, if seven measurements are taken in each measurement period,e.g., the seven measurements listed in the table above, the non-volatilememory 1042 may be large enough to store 20 repetitions of these sevenmeasurements. Under other operating conditions, the non-volatile memory1042 may record the readings at the operating points of interest or themeasurement points for the last hour of the cooling fan operation. Bystoring a number of sets of captured measurements for each of themeasurement points, the non-volatile memory 1042 may be utilized as adevice that can be looked at to determine the cause of failure in thecooling fan 1000, e.g., like a black box in an airplane.

In an embodiment of the invention, the captured readings at theoperating points of interest may be read or retrieved 1210 from thenon-volatile memory on a periodic basis. In an embodiment of theinvention, the captured readings at the measurements points may betransmitted to an external device or a computer system. The capturedreadings at the operating points or measurement points may be read eachtime the measurements are stored in the non-volatile memory 1042 or themeasurements may be read at a specified timeframe, e.g., such as every30 minutes. The measurements may be read utilizing the communicationprotocol of the system 1040 and by utilizing the interface 1030. Themeasurements may also be read by creating a separate input on thecooling fan which an external device may utilize to read or retrieve thecaptured readings. The external device may communicate with the coolingfan 1000 utilizing serial communications.

The captured readings at the operating points of interest/measurementpoints are analyzed 1215 to assist in determining a cause of the failureof a cooling fan. Illustratively, if the cooling fan 1000 fails, thestored, transmitted, or read readings are analyzed to identify what mayhave caused the failure. Illustratively, the operating points ofinterest may include the fan current, the fan input voltage, a speedreading measurement and a MOSFET gate voltage. If the fan input voltagewas outside a normal level, e.g., +45 percent of normal voltage, thedata may indicate that the input voltage caused the failure of thecooling fan, and that the device that provides the fan input voltage maybe malfunctioning.

In an embodiment of the invention, an operator of the system 1040 mayview the measurements at the operating points of interest, either afterthe measurements are transmitted from the cooling fan or retrieved fromthe cooling fan. In this embodiment of the invention, the computersystem may automatically analyze the measurements at the operatingpoints of interest and may generate error messages or messagesidentifying the probable cause of the failure of the cooling fan.

FIG. 13 illustrates a method of measuring points of interest in acooling fan in order to keep a cooling fan from failing according to anembodiment of the present invention. As discussed above in regard toFIG. 12, points of interest are monitored 1300, such as cooling faninput voltage, cooling fan current, microcontroller input voltage, etc.The method prevents cooling fans from failing if unacceptablemeasurements are received from the operating points of interest.

In an embodiment of the present invention, the captured readings at thepoint of interests or measurement points may be transmitted 1310 to anon-volatile RAM or a volatile RAM for storage. For example, the inputcurrent measurement and the microcontroller input voltage may betransmitted to a non-volatile RAM for storage.

The cooling fan 1000 may store predetermined thresholds for measurementsat the cooling fan points of interest in a non-volatile RAM 1024. Thenon-volatile RAM 1024 may be located internal to the microcontroller1020 or external to the microcontroller 1020. The captured readings atthe points of interest or measurement points are compared 1320 to thepredetermined thresholds to determine if the captured readings exceed orare less than the predetermined thresholds. For example, the inputvoltage to the microcontroller may have a lower threshold of 4.6 voltsand an upper threshold of 5.6 volts. If the measured input voltage forthe cooling fan is 5.9 volts, then the measured input voltage exceedsthe predetermined threshold.

If the captured readings at a cooling fan point of interest ormeasurement point is above one of the predetermine thresholds, then ashutdown operation or a modification operation may be initiated 1330 forthe cooling fan. The shutdown operation may shutdown operation of thecooling fan by disabling the outputs of the microcontroller. Themodification operation of the cooling fan may result in the increasingor the decreasing of a duty cycle of a driving signal transmitted to themotor 1014 from the microcontroller 1020.

Illustratively, 1) the input voltage to the cooling fan, 2) the fanspeed, 3) the MOSFET driving voltage, and 4) the input voltage to themicrocontroller may be monitored. Under certain operating conditions,the fan speed may be determined to be greater than the fan speedpredetermined threshold, e.g., the fan is rotating too fast. Amodification operation may be initiated via the microcontroller 1020 toreduce the duty cycle of the driving signal to the motor 1014. Undercertain operating conditions, the input voltage to the microcontroller1020 may be too high and may be higher than the microcontroller inputvoltage predetermined threshold. Because a high microcontroller inputvoltage may cause damage to the microcontroller 1020, a shutdownoperation may be initiated to shutdown operation of the cooling fan1000.

If the captured readings at one of the points of interest or measurementpoints is above a predetermined threshold, than an error message ormessage may be transmitted 1340 to the computer system that the errorcondition has occurred, that a modification operation was initiated, orthat the cooling fan 1000 was shut down. In some cases, this informationmay be transmitted to a log file. Under other operating conditions, theerror message or message may appear as a dialog box in the graphicaluser interface of the currently executing application.

The method described in FIGS. 9 and 13 may be incorporated together. Inother words, in step 920 of FIG. 9, a corresponding fan speed for areading (duty cycle value, DC voltage, resistance) may be compare to afan speed received from the speed sensor. In addition to reducing theduty cycle (or other value) of a driving signal if the measured fanspeed is less than a predetermined fraction of the corresponding fanspeed, an error message may be generated identifying that the fan is notoperating correctly. Under certain operating conditions, this errormessage may be stored in a memory in the cooling fan. Under otheroperating conditions, this error message may be transmitted to acomputer system coupled to the cooling fan.

While the description above refers to particular embodiments of thepresent invention, it will be understood that many modifications may bemade without departing from the spirit thereof. The accompanying claimsare intended to cover such modifications as would fall within the truescope and spirit of the present invention. The presently disclosedembodiments are therefore to be considered in all respects asillustrative and not restrictive, the scope of the invention beingindicated by the appended claims, rather than the foregoing description,and all changes that come within the meaning and range of equivalency ofthe claims are therefore intended to be embraced therein.

1. A method of controlling a motor speed for a fan assembly, comprising:receiving a duty cycle value at a microcontroller; receiving a measuredfan speed, from a speed sensor; determining an expected fan speed basedon the duty cycle value; comparing the measured fan speed with theexpected fan speed; and reducing a duty cycle of a motor driving signalif the measured fan speed is less than a predetermined fraction of theexpected fan speed.
 2. The method of claim 1, wherein the measured fanspeed is received at the microcontroller.
 3. The method of claim 1,wherein the expected fan speed is retrieved from a lookup table, theexpected fan speed corresponding to the duty cycle value in the lookuptable.
 4. The method of claim 1, further including: waiting apredetermined amount of time; and increasing the duty cycle of the motordriving signal to a test duty cycle to determine if a motor driving thefan assembly is operating in a desired operating condition.
 5. Themethod of claim 4, further including: calculating a second duty cyclevalue corresponding to the test duty cycle; receiving a second measuredspeed from the speed sensor; retrieving a second expected fan speed fromthe lookup table corresponding to the second duty; and comparing thesecond measured speed to the second expected fan speed.
 6. The method ofclaim 5, further including reducing the duty cycle of the motor drivingsignal if the second measured speed is not within a range of the secondexpected fan speed.
 7. The method of claim 5, further includingincreasing the duty cycle of the motor drive signal to a fulloperational value if the second measured speed is within a range of thesecond expected fan speed.
 8. The method of claim 1, further includingstopping transmission of the motor driving signal if the measured fanspeed is less than a second predetermined fraction of the expected fanspeed.
 9. The method of claim 8, further including waiting apredetermined amount of time and transmitting the motor driving signalafter the predetermined amount of time.
 10. A method of operating acooling fan, comprising: monitoring a temperature of the cooling fan;determining if the temperature is within a predefined temperaturewindow; multiplying a weighting factor, based on the temperature of thecooling fan, by a first number of revolutions to create a weightednumber of revolutions; and adding the weighted number of revolutions toa total number of revolutions to create a total weighted number ofrevolutions.
 11. The method of claim 10, further including: determiningif the total weighted number of fan revolutions is greater than amilestone revolution target; generating a message if the total weightednumber of fan revolutions is greater than the milestone revolutiontarget; and transmitting the generated message indicating the totalweighted number of fan revolutions is greater than the milestonerevolution target.
 12. The method of claim 10, further including:determining if the total weighted number of fan revolutions is greaterthan a recommended revolution life for the cooling fan; generating amessage if the total weighted number of fan revolutions is greater thanthe recommended revolution life for the cooling fan; and transmittingthe message indicating the total weighted number of fan revolutions hassurpassed the recommended revolution life for the cooling fan.
 13. Themethod of claim 10, wherein the weighting factor is calculated based onthe temperature of the fan assembly before the weighting factor ismultiplied by the first number of revolutions.
 14. The method of claim10, wherein the weighting factor is determined based on the temperatureof the fan assembly after the weighting factor is multiplied by thefirst number of revolutions.
 15. A method of monitoring a cooling fanassembly, comprising: monitoring a plurality of points of interest ofthe cooling fan assembly; periodically capturing readings for each ofthe plurality of points of interest to create a number of measurementsfor each of the plurality of points of interest of the cooling fanassembly; storing the number of measurements for each of the pluralityof points of interest in a memory; and transmitting the stored number ofmeasurements for each of the plurality of the points of interest to anexternal receiver.
 16. The method of claim 15, further includingreceiving the stored number of measurements for each of the plurality ofpoints of interest and analyzing the received number of measurements todetermine if the cooling fan assembly is operating correctly.
 17. Themethod of claim 15, wherein the stored number of measurements istransmitted in response to polling by the receiver.
 18. A method ofmonitoring a cooling fan, comprising: monitoring a plurality ofmeasurement points in a cooling fan to capture readings for theplurality of measurement points; determining whether the readings forthe plurality of measurement points are above a plurality ofcorresponding established thresholds for the plurality of measurementpoints; and modifying operation of the cooling fan if one or more of theplurality of readings is above the corresponding established threshold.19. The method of claim 18, further including transmitting an errormessage if one or more of the plurality of readings is above thecorresponding established threshold.
 20. The method of claim 18, furtherincluding shutting down operation of the cooling fan if two of theplurality of corresponding readings are above the correspondingestablished threshold.
 21. A method of operating a cooling fan,comprising: monitoring a temperature of the cooling fan; determining ifthe temperature is within a predefined temperature window; multiplying aweighting factor, based on the temperature of the cooling fan, by afirst number of revolutions to create a weighted number of revolutions;adding the weighted number of revolutions to a total number ofrevolutions to create a total weighted number of revolutions;determining if the total weighted number of fan revolutions is greaterthan a milestone revolution target; and generating a message if thetotal weighted number of fan revolutions is greater than the milestonerevolution target.